// 暴力枚举：双重循环遍历所有子字符串
public String longestNiceSubstring(String s) {
    // 记录最大位置和长度
    int n = s.length();
    int masPos = 0;
    int masLen = 0;
    for (int i = 0; i < n; i++) {
        // 大写和小写集合
        int lower = 0;
        int upper = 0;
        for (int j = i; j < n; j++) {

            if (Character.isLowerCase(s.charAt(j))) {
                lower |= 1 << (s.charAt(j) - 'a');
            } else {
                upper |= 1 << (s.charAt(j) - 'A');
            }
            // 大小写集合相等，并且长度超过最大长度就记录
            if (lower == upper && j - i + 1 > masLen) {
                masPos = i;
                masLen = j - i + 1;
            }
        }
    }
    return s.substring(masPos, masPos + masLen);
}